package br.unisal.repository;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.util.List;

import org.junit.Before;
import org.junit.Test;

import br.unisal.domain.Cliente;
import br.unisal.factory.ClienteFactory;

public class ClienteRepositoryTeste{

	private ClienteRepository clienteRepository;
	private ClienteFactory fabricaCliente;
	private Cliente clientecadastro, clienteRetorno;
	private String telefoneUsadoNoTeste;
	
	@Before
	public void inicializa(){
		clienteRepository = new ClienteRepository();
		fabricaCliente = new ClienteFactory();
		telefoneUsadoNoTeste = "3333";
		clientecadastro = fabricaCliente.criaCliente(telefoneUsadoNoTeste, "Marco", "Silva", "rua teste", 12, "Sumare", "Centro", "Igreja matriz");
		clienteRepository.adicionaCliente(clientecadastro);
	}
	
	@Test
	public void consultarClienteNaoPodeRetornarNull() {
		Cliente cliente1 = clienteRepository.consultaCliente("1234");
		Cliente cliente2 = clienteRepository.consultaCliente("");
		
		assertNotNull(cliente1);
		assertNotNull(cliente2);
	}

	@Test
	public void verificaClienteAdicionado(){
		clienteRetorno = clienteRepository.consultaCliente(telefoneUsadoNoTeste);
		assertEquals(clientecadastro, clienteRetorno);
	}
	
	@Test
	public void verificaClienteExcluido(){
		clienteRetorno = clienteRepository.consultaCliente(telefoneUsadoNoTeste);
		assertEquals(clientecadastro, clienteRetorno);
		clienteRepository.excluiCliente(clientecadastro);
		clienteRetorno = clienteRepository.consultaCliente(telefoneUsadoNoTeste);
		assertTrue(clienteRetorno.getPrimeiroNome().equals("Sem cadastro"));
	}
	
	@Test
	public void testaRetornaListaCliente(){
		List<Cliente> clientes = clienteRepository.retornaListaClientes();
		assertEquals(true, clientes.contains(clientecadastro));
	}
	
	
}
